home *** CD-ROM | disk | FTP | other *** search
/ PC-Blue - MS DOS Public Domain Library / PC-Blue MS-DOS Public Domain Library - NYACC.iso / vol147 / joycal.bas < prev    next >
Encoding:
BASIC Source File  |  1986-12-16  |  2.5 KB  |  45 lines

  1. 100 ' Joystick calibration routine
  2. 110 ' This program maps your joystick coordinates onto the screen
  3. 120 ' This version 2.1 85/02/02
  4. 130 ' Written by Gary Woodman of Sabbath Computer Services
  5. 140 ' PO Box 1964 Darwin N.T. 5794 (089) 85-2819 (V) (089) 85-4701 (D)
  6. 150 DEFINT A-Z : FALSE = 0 : TRUE = NOT FALSE
  7. 155 KEY OFF : CLS : PRINT "Joystick Calibrator"
  8. 160 PRINT "Spin your joystick to calibrate, then press the button..."
  9. 170 ' Initialize minimum and maximum joystick values
  10. 180 XJOYMIN = 999 : XJOYMAX = 0 : YJOYMIN = 999 : YJOYMAX = 0
  11. 190 A$ = "" : WHILE A$ = ""        'use any key instead of fire button
  12. 200     XJOYSTK = STICK(0) : YJOYSTK = STICK(1)    'read joystick values
  13. 210     IF XJOYSTK > XJOYMAX THEN XJOYMAX = XJOYSTK    'save minima & maxima
  14. 220     IF XJOYSTK < XJOYMIN THEN XJOYMIN = XJOYSTK
  15. 230     IF YJOYSTK > YJOYMAX THEN YJOYMAX = YJOYSTK
  16. 240     IF YJOYSTK < YJOYMIN THEN YJOYMIN = YJOYSTK
  17. 250     A$ = INKEY$
  18. 270 WEND                                'until key pressed
  19. 280 ' Decide type of display
  20. 290 PRINT "SCREEN 1 or 2"
  21. 300 DONE = FALSE : WHILE NOT DONE : A$ = INKEY$
  22. 320     IF A$ = "1" THEN SCREEN 1: XPMAX = 319 : YPMAX = 199 : DONE=TRUE
  23. 330     IF A$ = "2" THEN SCREEN 2: XPMAX = 639 : YPMAX = 199 : DONE=TRUE
  24. 340 WEND
  25. 350 CLS : LINE (0,0)-(XPMAX,YPMAX),1,B                'a box on the screen edges
  26. 360 WHILE 0 = 0                                 'simple do-forever
  27. 370     XJOYSTK = STICK(0) : YJOYSTK = STICK(1)         'read joystick values
  28. 380 '   LINE -(XPIXEL,YPIXEL),0                         'undraw previous line
  29. 390     IF XJOYSTK > XJOYMAX THEN XJOYMAX = XJOYSTK    'save new max
  30. 400     IF XJOYSTK < XJOYMIN THEN XJOYMIN = XJOYSTK     'save new min
  31. 410 ' X and Y pixel addresses are max. pixel number * ratio between 
  32. 420 ' current and maximum displacements from minimum
  33. 430     XPIXEL = XPMAX * (XJOYSTK - XJOYMIN) / (XJOYMAX - XJOYMIN)
  34. 440     IF YJOYSTK > YJOYMAX THEN YJOYMAX = YJOYSTK     'save new max
  35. 450     IF YJOYSTK < YJOYMIN THEN YJOYMIN = YJOYSTK     'save new min
  36. 460     YPIXEL = YPMAX * (YJOYSTK - YJOYMIN) / (YJOYMAX - YJOYMIN)
  37. 470     ' PSET  (XPIXEL,YPIXEL)                           'the big moment!
  38. 479     PSET  (XPIXEL,YPIXEL)
  39. 480  '  LINE -(XPIXEL,YPIXEL)
  40. 490 ' keyboard control - C clears screen, R recalibrates
  41. 500     A$ = INKEY$ : IF A$ <> "" THEN IF A$ = "C" OR A$ = "c" THEN 350 ELSE IF A$ = "R" OR A$ = "r" THEN 155
  42. 505 LOCATE 24,1 : PRINT "X< Y<  X>  Y>  XJ  YJ  XPX  YPX";
  43. 510    LOCATE 25,1 : PRINT XJOYMIN;YJOYMIN;XJOYMAX;YJOYMAX;XJOYSTK;YJOYSTK;XPIXEL;YPIXEL;
  44. 520 WEND
  45.